/*******************************************************************************
* 
* Gloom game engine for FE r2
* 
* 
******************************************************************************/
#pragma once
#include "noria.h"
#include "resource-manager.h"
#include "fmod-manager.h"
#include "graphic-manager.h"
#include "font-manager.h"
#include "locale-manager.h"

using noria::io::ResourceManager;
using noria::fmod::FModManager;
using noria::graphic::GraphicManager;
using noria::locale::LocaleManager;

namespace noria{ namespace engine
{
    class GloomEngine
    {
    public:
        GloomEngine(void);
        ~GloomEngine(void);
                       
        // ------------------------------------------------------------------------------------
        // Pointer to ResourceManager
        // ------------------------------------------------------------------------------------
        ResourceManager* resource() const;
        
        // ------------------------------------------------------------------------------------
        // Pointer to FModManager
        // ------------------------------------------------------------------------------------
        FModManager* audio() const;
        
        // ------------------------------------------------------------------------------------
        // Pointer to GraphicManager
        // ------------------------------------------------------------------------------------
        GraphicManager* graphic() const;
        
        // ------------------------------------------------------------------------------------
        // Pointer to FontManager
        // ------------------------------------------------------------------------------------
        FontManager* font() const;
        
        // ------------------------------------------------------------------------------------
        // Pointer to LocaleManager
        // ------------------------------------------------------------------------------------
        LocaleManager* locale() const;

    private:
        void init();


        unique_ptr<ResourceManager> m_res;
        unique_ptr<FModManager> m_audio;
        unique_ptr<GraphicManager> m_graph;
        unique_ptr<FontManager> m_font;
        unique_ptr<LocaleManager> m_locale;
    };

}}